<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h1>{{num}}</h1>
      <button @click="add">点击</button>
    </div>
    <script src="./vue.js"></script>
    <script>
      const obj = {
        a: {
          fn () {
            console.log(this)
          },
          atxt: '我是a'
        },
        objtxt: '我是obj'
      }
      obj.a.fn()
      const xxxfn = obj.a.fn
      xxxfn()
    </script>
    <script>
      // this就是指向vue实例对象,它可访问data数据与methods方法
      // html不需要加this(不加肯定正确，加了可能报错)
      // js内一定要加this
      //   vue的methods内的第一层方法的this指向vue实例，方法内再包含方法，它的指向是原生的this(谁调用指向谁)
      //   vue的methods内的非第一层方法定义时都使用箭头函数
      const app = new Vue({
        el: '#app',
        data: {
          num: 1,
          xxx: 2,
          ooo: 3
        },
        methods: {
          add: function () {
            console.log(app === this)
            console.log(this)
            this.num++
            this.fn()
            const fn2 = () => {
              console.log(this)
            }
            fn2()
            setTimeout(() => {
              console.log(this)
            }, 2000)
          },
          fn: function () {
            console.log('fn')
          }
        }
      })
    </script>
  </body>
</html>
